package cn.com.cpic.insurance.rulecheck.core.parameter;

import java.io.Serializable;

/**
 * 参数值栈
 * 
 * @author 代波
 * @since 2011-8-13
 */
public interface ParameterStack extends Iterable<String>, Serializable {
	/**
	 * 设置一个参数的值
	 * 
	 * @param parameterToken 参数标识，不能为null
	 * @param value 参数值，不能为null
	 * @return 如果之前已经设置过该参数的值，则返回参数的旧值，否则返回null
	 * @throws IllegalArgumentException 参数标识或者参数值为null
	 */
	String setValue(String parameterToken, String value) throws IllegalArgumentException;

	/**
	 * 获得指定参数标识在值栈中的值
	 * 
	 * @param parameterToken 参数标识
	 * @return 在值栈中的值，如果指定标识不在值栈中，返回null
	 */
	String getValue(String parameterToken);

	/**
	 * 判断在值栈中是否包含参数标识
	 * 
	 * @param parameterToken 参数标识
	 * @return 如果值栈中包含指定的参数标识，则返回true，否则返回false
	 */
	boolean contains(String parameterToken);
}
